

///邮箱脱敏
String desensitizeEmail(String email) {
  if (email.isEmpty) {
    return '';
  }

  // 匹配邮箱地址的正则表达式
  RegExp emailRegex = RegExp(r'^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$');

  if (!emailRegex.hasMatch(email)) {
    return email;
  }

  // 将邮箱地址分为用户名和域名部分
  List<String> parts = email.split('@');
  String username = parts[0];
  String domain = parts[1];

  // 对用户名进行脱敏处理
  String desensitizedUsername =username;
  if(username.length>2){
    desensitizedUsername=username.replaceRange(2, username.length - 2, '****');
  }

  // 返回脱敏后的邮箱地址
  return desensitizedUsername + '@' + domain;
}

///手机号脱敏
String desensitizePhoneNumber(String phoneNumber) {
  // 假设手机号是11位，根据需要调整
  const maskLength = 11 - 3 - 4; // 总长度 - 前缀长度 - 后缀长度

  // 验证手机号格式
  final regExp = RegExp(r'^1\d{10}$');
  if (regExp.hasMatch(phoneNumber)) {
    // 获取手机号的前三位和后四位
    final prefix = phoneNumber.substring(0, 3);
    final suffix = phoneNumber.substring(phoneNumber.length - 4);

    // 生成脱敏后的手机号
    return '$prefix${'*' * maskLength}$suffix';
  } else {
    // 如果不是有效的手机号格式，直接返回原字符串
    return phoneNumber;
  }
}

///身份证脱敏
String desensitizeIdCard(String idCardNumber) {
  // 假设身份证号码是18位，根据需要调整
  const maskLength = 18 - 6 - 4; // 总长度 - 前缀长度 - 后缀长度

  // 验证身份证号码格式
  final regExp = RegExp(r'^\d{17}(\d|X)$');
  if (regExp.hasMatch(idCardNumber)) {
    // 获取身份证号码的前六位和后四位
    final prefix = idCardNumber.substring(0, 6);
    final suffix = idCardNumber.substring(idCardNumber.length - 4);

    // 生成脱敏后的身份证号码
    return '$prefix${'*' * maskLength}$suffix';
  } else {
    // 如果不是有效的身份证号码格式，直接返回原字符串
    return idCardNumber;
  }
}
